package com.zhihesj.anan.system.controller;


import cn.hutool.core.bean.BeanUtil;
import com.zhihesj.anan.message.Message;
import com.zhihesj.anan.message.MessageCodeEnum;
import com.zhihesj.anan.system.entity.Config;
import com.zhihesj.anan.system.service.ConfigService;
import com.zhihesj.anan.system.vo.ConfigVo;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;

import javax.validation.Valid;
import java.util.List;
import java.util.Map;

/**
 * <p>
 * 参数配置表 前端控制器
 * </p>
 *
 * @author anan
 * @since 2020-08-31
 */
@RestController
@RequestMapping("/system/config")
public class ConfigController {

    @Autowired
    private ConfigService configService;

    @GetMapping("/getConfigList")
    public Message getConfigList(ConfigVo configVo){
        System.out.println(configVo);
        Map<String, Object> stringObjectMap = BeanUtil.beanToMap(configVo, false, true);
        if (stringObjectMap.isEmpty()){
            List<Config> configs = configService.list();
            return Message.success(configs);
        }else{
//            QueryWrapper wrapper = new QueryWrapper();
//            stringObjectMap.forEach((key,value)->{
//                wrapper.eq(key, value);
//            });
            List<Config> list = configService.selectPage(configVo);
            return Message.success(list);
        }
    }

    @DeleteMapping("/deleteByConfigId")
    public Message deleteByConfigId(@RequestBody ConfigVo configVo){
        if (configVo.getConfigId()!=null && configService.removeById(configVo.getConfigId())){
            return Message.success(MessageCodeEnum.DELETE_SUCCESS);
        }
        return Message.success(MessageCodeEnum.OPERATION_ERROR);
    }

    @PostMapping("/updateConfigById")
    public Message updateConfigById(@RequestBody @Valid Config config){
        if (config.getConfigId()!=null && configService.updateById(config)){
            return Message.success(MessageCodeEnum.UPDATE_SUCCESS);
        }
        return Message.success(MessageCodeEnum.OPERATION_ERROR);
    }

    @PostMapping("/addConfig")
    public Message addConfig(@RequestBody @Valid Config config){
        if (!config.toString().isEmpty()) {
            configService.save(config);
            return Message.success(MessageCodeEnum.ADD_SUCCESS);
        }
        return Message.success(MessageCodeEnum.OPERATION_ERROR);
    }
}
